#include"SearchBinaryTree.h"
#include<string>

//int main()
//{
//	int a[] = { 8, 3, 1, 10, 6, 4, 7, 14, 13 };
//	//int a[] = { 8, 3, 3, 1, 3, 10, 6, 3, 4, 7, 5, 14, 13 };
//
//	BSTree<int> t;
//	for (auto e : a)
//	{
//		t.Insert(e);
//	}
//
//	//t.InOrder();
//
//	////t.Find(100);
//
//	//t.Erase(4);
//	//t.InOrder();
//
//	//t.Erase(3);
//	//t.InOrder();
//
//	for (auto e : a)
//	{
//		t.Erase(e);
//		t.InOrder();
//	}
//
//	return 0;
//}


//int main()
//{
//	KeyValue::BSTree<string, string> dic;
//	dic.Insert("left", "左边");
//	dic.Insert("right", "右边");
//	dic.Insert("string", "字符串");
//	dic.Insert("insert", "插入");
//
//	string str;
//	while (cin >> str)//string的流提取  ctrl+^Z +enter杀掉进程
//	{
//		//auto ret = dic.Find(str);
//		KeyValue::BSTNode<string, string>* ret = dic.Find(str);
//		if (ret)
//		{
//			cout << "->" << ret->_value << endl;
//		}
//		else
//		{
//			cout << "无此单词，请重新输入！！！" << endl;
//		}
//	}
//
//	return 0;
//}

//int main()
//{
//	// 统计水果出现的次数
//	string arr[] = { "苹果", "西瓜", "苹果", "西瓜", "苹果", "苹果", "西瓜",
//   "苹果", "香蕉", "苹果", "香蕉" };
//	KeyValue::BSTree<string, int> countTree;
//	for (const auto& str : arr)
//	{
//		// 先查找水果在不在搜索树中
//		// 1、不在，说明水果第一次出现，则插入<水果, 1>
//		// 2、在，则查找到的节点中水果对应的次数++
//		//BSTreeNode<string, int>* ret = countTree.Find(str);
//		auto ret = countTree.Find(str);
//		if (ret == NULL)
//		{
//			countTree.Insert(str, 1);
//		}
//		else
//		{
//			ret->_value++;
//		}
//	}
//	countTree.InOrder();
//
//	return 0;
//}

int main()
{
		KeyValue::BSTree<string, string> dict;
		dict.Insert("insert", "插入");
		dict.Insert("erase", "删除");
		dict.Insert("left", "左边");
		dict.Insert("string", "字符串");

		string str;
		while (cin >> str)
		{
			auto ret = dict.Find(str);
			if (ret)
			{
				cout << str << ":" << ret->_value << endl;
			}
			else
			{
				cout << "单词拼写错误" << endl;
			}
		}

		string strs[] = { "苹果", "西瓜", "苹果", "樱桃", "苹果", "樱桃", "苹果", "樱桃", "苹果" };
		// 统计水果出现的次
		KeyValue::BSTree<string, int> countTree;
		for (auto str : strs)
		{
			auto ret = countTree.Find(str);
			if (ret == NULL)
			{
				countTree.Insert(str, 1);
			}
			else
			{
				ret->_value++;
			}
		}
		countTree.InOrder();

	return 0;
 }